#ifndef __FOG_STATE_H__
#define __FOG_STATE_H__

#include "Color.h"
#include "RenderState.h"

class FogState : public RenderState
{
public:
	FogState();
	virtual Type get_type() const;

	bool& enabled();
	Real& start();
	Real& end();
	Real& density();
	Color& color();

	enum DensityFunction
	{
		GL_LINEAR,
		GL_EXP,
		GL_EXPSQR,
		DF_QUANTITY
	};

	DensityFunction& dfunction();
	
	enum ApplyFunction
	{
		GL_PER_VERTEX,
		GL_PER_PIXEL,
		AF_QUANTITY
	};

	ApplyFunction& afunction();

protected:
	bool m_enabled;
	Real m_start, m_end, m_density;
	Color m_color;
	DensityFunction m_dfunction;
	ApplyFunction m_afunction;
};

#include "FogState.inl"

#endif
